package cn.stylefeng.guns.sys.modular.system.controller;

import com.baidu.aip.ocr.AipOcr;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;

@Controller
@RequestMapping("/baiduApi")
public class BaiduApi {


    //设置APPID/AK/SK
    public static final String APP_ID = "22969473";
    public static final String API_KEY = "nKBp2i3QZw5cNEmZtdHdlzIj";
    public static final String SECRET_KEY = "ok04rzWU6cxcDrKH8SdhGqZfVpHsWzoc";

    /**
     * 识别身份证信息
     * @param
     */
    @PostMapping("/sample")
    @ResponseBody
    public String sample(String image) {
        // 初始化一个AipOcr
        AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);

        // 可选：设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);

        client.setSocketTimeoutInMillis(60000);

        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
//        client.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
//        client.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理

        // 传入可选参数调用接口
        HashMap<String, String> options = new HashMap<String, String>();
        options.put("detect_direction", "true");// 是否检测图像朝向，默认不检测，即：false。
        options.put("detect_risk", "false");// 是否开启身份证风险类型(身份证复印件、临时身份证、身份证翻拍、修改过的身份证)功能，默认不开启，即：false。

        String idCardSide = "front";//front：身份证含照片的一面；back：身份证带国徽的一面
//        String idCardSide = "back";

        // 参数为本地图片路径
       // String image = "test.jpg";
        JSONObject res = client.idcard(image, idCardSide, options);
        System.out.println(res.toString(2));

        if (res != null) {
            JSONObject idCard = new JSONObject();
            JSONObject words_result = res.getJSONObject("words_result");

            idCard.put("name", words_result.getJSONObject("姓名").get("words"));
            idCard.put("nation", words_result.getJSONObject("民族").get("words"));
            idCard.put("address", words_result.getJSONObject("住址").get("words"));
            idCard.put("sex", words_result.getJSONObject("性别").get("words"));
            idCard.put("birth", words_result.getJSONObject("出生").get("words"));
            idCard.put("number", words_result.getJSONObject("公民身份号码").get("words"));
            return idCard.toString(2);
        } else {
            return "";
        }

    }


}
